| Funktionale Programmiersprache | Dieser Text beschreibt Funktionale Programmiersprache. Der untere Text beinhaltet die Funktionale Programmiersprache Beschreibung. Soweit es sich um ein definierbares Objekt handelt, sollte hier eine Funktionale Programmiersprache Definition vorhanden sein. Sollte eine Definition von Funktionale Programmiersprache fehlen, kann diese von Ihnen verfaßt werden. Wir sind bestrebt die Beschreibung von Funktionale Programmiersprache möglichst ausführlich zu halten.
Jeder Text bei Know-Library, sowie ein Teil davon (Definition, Beschreibung etc.), außer Bücher Beschreibungen kann bearbeitet werden. Falls die Beschreibung auf dieser Seite nicht korrekt ist klicken Sie auf 'Beschreibung editieren' um den Text zu korrigieren bzw. neuen einzufügen. Weitere Informationen und Bücher zum Thema Funktionale Programmiersprache Beschreibung , so wie Link zum Forum finden Sie weiter unten. Eine Übersicht der Texte, die das Thema Funktionale Programmiersprache beschreiben finden Sie auf der Seite alle Artikel über Funktionale Programmiersprache. Fragen zu dem Thema Funktionale Programmiersprache können im Forum gestellt werden. Klicken Sie hier um zu dem Forum zu wechseln.
Funktionale Programmiersprache ArtikelIn einer funktionalen Programmiersprache werden Berechnungen als Auswertung mathematischer Funktionen verstanden. In dem Unterschied dazu werden in prozeduralen (oder imperativen) Programmiersprachen Berechnungen als Befehlssequenzen dargestellt, die nacheinander abgearbeitet werden. Die mathematische Grundlage der funktionalen Programmierung ist der λ-Kalkül (Aussprache: Lambda-Kalkül).
Anders ausgedrückt:
- Ein funktionales Programm ist eine Abbildung von Eingabedaten auf Ausgabedaten, wohingegen ein imperatives Programm eine Arbeitsanweisung für eine Maschine ist. (Pepper)
- In einem funktionalen Programm wird die Reihenfolge der Berechnungsschritte in der Regel nicht festgelegt, während ein imperatives Programm ohne die Reihenfolge der Abarbeitungsschritte gar nicht verstanden werden kann.
- Funktionale Programmiersprachen erlauben es, Funktionen (wie Daten) als Argumente und Rückgabewerte anderer Funktionen zu behandeln. Dadurch ist es einfach, Operatoren auf Funktionen zu definieren. Dies macht funktionale Programme häufig kürzer und abstrakter, erfordert jedoch häufig eine Umgewöhnungszeit für Programmierer, die den imperativen Programmierstil gewohnt sind.== Konzepte ==
Reine funktionale Programmiersprachen | |
Reine (engl. pure) funktionale Programme können als mathematische Funktion aufgefasst werden: Ein Ausdruck hat dort während der Programmausführung stets den gleichen Wert. Es gibt keine Zustandsvariablen, die während einer Berechnung geändert werden. Man genannt dieses Merkmal als Werttreue (engl. referential transparency). Sie vereinfacht Korrektheitsbeweise von Algorithmen wesentlich. Um erwünschte Nebeneffekte (Benutzerinteraktion, Eingabe/Ausgabe-Operationen) beschreiben zu können, sind meist besondere Vorkehrungen notwendig. Die meisten funktionalen Programmiersprachen erlauben allerdings Nebeneffekte und sind daher keine reinen funktionalen Programmiersprachen (Ausnahme: Haskell).
Buch-Tipp: Analysis 1 Vielleicht das beste Buch zur Analysis I, jedenfalls mit Lösungen Analysis ist die Theorie der Grenzprozesse, meist Differential- und Integralrechnung, hier mit einer reellen oder komplexen Variablen. Das Buch ist sehr angenehm zu lesen. Je mehr man schon weiß, umso angenehmer natürlich, dann ist es fast wie ein Lesebuch. Besonders geeignet halte... |
Funktionen höherer Ordnung | |
Man unterscheidet Funktionen erster Ordnung und Funktionen höherer Ordnung. Bei Funktionen höherer Ordnung sind Funktionen selbst Werte. Dies erlaubt es insbesondere, Funktionen als Ergebnisse oder Parameter anderer Funktionen zu benutzen. Ein typisches Beispiel ist der Ableitungsoperator: Eingabe ist eine differenzierbare Funktion, Ausgabe ist die Ableitung dieser Funktion. Ein Beispiel aus der Informatik ist map, um eine beliebige, übergebene Funktion f auf jedes Element einer Liste anzuwenden. Definition in Haskell:
map f [] = []
map f (x:xs) = f x : map f xs
- In der ersten Zeile wird das Ergebnis für eine leere Liste [] zurückgegeben; die zweite Zeile wendet die Funktion
f auf das erste Listenelement x an und führt dann einen Rekursionsschritt für die restliche Liste xs durch.
|
Bedarfsauswertung und strenge Auswertung | |
Funktionale Sprachen kann man auch nach ihrer Auswertungsstrategie unterscheiden: Bei strenger Auswertung (engl. eager bzw. strict evaluation) werden Ausdrücke sofort ausgewertet. Dem gegenüber steht die Bedarfsauswertung (engl. lazy evaluation), bei der Ausdrücke erst ausgewertet werden, wenn deren Wert in einer Berechnung benötigt wird. Dadurch lassen sich z.B. unendlich große Datenstrukturen (die Liste aller natürlicher Zahlen, die Liste aller Primzahlen, etc.) definieren und bestimmte Algorithmen vereinfachen sich. Manche Berechnungen lassen sich mit strenger Auswertung, andere mit Bedarfsauswertung effizienter ausführen.
Buch-Tipp: Arbeitshefte Mathematik - Neubearbeitung: Arbeitsheft Mathematik, Neubearbeitung, Bd.5, Reelle Zahlen, Potenzen, Funktionen, Geometrie, Quadratische Gleichungen, Gleichungssysteme, EURO: Bd 5 Der Mercedes unter den Arbeitsheften Unter den über 100 Matheheften- und Büchern ist dieses mit Abstand (!) das allerbeste!
Endlich mal ein Heft, das nicht ca. mit wenigen Aufgaben, die in megagroßer Schrift dargestellt sind, das Heft füllen.
Übersicht und Darstellung sind absolut super.
Vor allem lobe ich, dass tatsächlich so gut wie alle... |
| |
Zusätzlich kann man funktionale Sprachen einteilen in dynamisch und statisch typisierte Sprachen, die sich dadurch ergeben, dass die Typprüfung während der Laufzeit bzw. während der Übersetzungszeit stattfinden kann. Programmiersprachen wie Haskell und SML sind statisch typisiert und unterstützen Typeninferenz (d.h. der Compiler erkennt die Datentypen automatisch). Programmiersprachen aus der Lisp-Familie sind dynamisch typisiert.
|
Nebenläufigkeit und Verteilung | |
Eine weitere Einteilung kann danach vorgenommen werden, ob die Sprache für sequentielle oder nebenläufige Ausführung entworfen wurde und ob es Unterstützung für die Verteilung auf verschiedene Rechnerknoten gibt. Ein Beispiel für eine nebenläufige, verteilte funktionale Sprache ist Erlang.
Buch-Tipp: Einführung in die Programmierung mit Haskell. Sehr kompakte Haskell-Einführung In unserer Vorlesung wird Haskell neben Java als funktionale Programmiersprache behandelt. Die auf dem Markt vorhandenen Bücher zu dem Thema sind mir zu umfangreich und teuer, das Buch von Chakravarty und Keller (noch dazu deutschsprachig) ist eine gute Alternative. Als Begleitliteratur zu einer Vorlesung sehr zu empfehlen,... |
Algorithmen und Datenstrukturen | |
Algorithmen geben vorteilhafte Verfahren für die Lösung wichtiger Probleme an (z.B. Sortieren) und sind in der Regel gut analysiert, so dass ein Entwickler auf bewährte, einschätzbare Lösungen zurückgreifen kann. Gleiches leisten Datenstrukturen für die Organisation von Daten. Sammlungen von guten Algorithmen und Datenstrukturen haben somit eine große praktische Bedeutung.
Chris Okasaki schreibt: Auch wenn die meisten dieser Bücher [über Datenstrukturen] behaupten, das sie unabhängig von einer bestimmten Programmiersprache sind, so sind sie leider ca. sprachunabhängig in dem Sinne Henry Fords: Programmierer können jede Programmiersprache benutzen, solange sie imperativ ist.
Der Verzicht auf zerstörerische Zuweisungen führt dazu, das ettliche klassische Algorithmen und Datenstrukturen, die regen Gebrauch von dieser Möglichkeit machen, so nicht für funktionale Sprachen benutzt werden können und man nach neuen Lösungen suchen muss.
Gerade rein funktionale Datenstrukturen sind von ihrer Natur her anders, als die gewohnten Datenstrukturen, die meist ca. eine Version ihrer Daten verwalten (ephemerale Datenstrukturen), wohingegen funktionale Datenstrukturen mehrere Versionen verwalten (persistente Datenstrukturen).
Buch-Tipp: Einführung in die angewandte Wirtschaftsmathematik Einführung in die angewandte Wirtschaftsmathematik Ich studiere BWL bei der AKAD in einem Fernstudiengang. Die AKAD setzt in dem Kurs Wirtschaftsmathematik eine für Fernstudien modifizierte Fassung des Buches von TIETZE ein, daneben besitze ich auch das Originalbuch sowie das Lösungsbuch. In dem Lehrbuch wird die Mittelstufenmathematik wiederholt und... |
|
Buch-Tipp: Einführung in die funktionale Programmierung mit Miranda Umfassendes Werk zur funktionalen Programmierung In diesem Buch führt Ralf Hinze nicht nurins wenig verbreitete und "ganz andere" Gebiet der funktionalen Programmierung ein, sondern steigert sich in den hinteren Kapiteln zu effizienten Lösungen anspruchsvoller Probleme, die für eine Einführung zu dem Teil etwas zu hoch gegriffen scheinen.... |
|
local
val pi = 3.14;
val sq = fn x => x*x;
in
val ringarea = fn (R,r) => pi*(sq R - sq r);
end;
- Dieses Programm definiert eine Funktion
ringarea, die die Fläche berechnet, die zwischen den beiden konzentrischen Kreisen mit den Radien R und r liegt. Dazu werden die Konstante pi und die Hilfsfunktion sq definiert. Diese werden von ringarea dann für die Berechnung benutzt.== Funktionale Programmiersprachen ==
Siehe auch: Programmierparadigma
|
Weiteres zu dem Artikel Funktionale Programmiersprache | | Andere Leser interessierten sich auch für folgende Beschreibungen: | Auswertung, Daten, Manche, Programmiersprachen, Sinne | | Schnellzugrif auf verwandte Texte: | | | NEU! Frage im Forum zum Thema: | | Wenn die Beschreibung 'Funktionale Programmiersprache' Ihrer Meinung nach nicht korrekt ist oder in aktueller Version Fehler enthalten sind oder es fehlt die Funktionale Programmiersprache Definition, dann klicken Sie bitte auf "Beschreibung bearbeiten" und schreiben Sie die Eigene Version des Textes. Die Änderungen in der Beschreibung werden sofort aktiv und für alle sichtbar. Ein Administrator wird Ihre Version der Beschreibung und Definition von 'Funktionale Programmiersprache' nachher prüfen. Bitte achten Sie auf die Urheberrechte (Copyright). Wir sind für die besseren Beschreibung von 'Funktionale Programmiersprache' und 'Funktionale Programmiersprache' Definition sehr dankbar.
Alle Tipps zu den Bücher auf dieser Seite wurden automatisch generiert. D.h. die Bücher wurden aus einer Datenbank von dem Computer ausgesucht. Deshalb kann es vorkommen, dass vorgeschlagene Bücher nicht ganz der 'Funktionale Programmiersprache' Beschreibung entsprechen.
|
|
|
· Diese Seite wurde bisher 1.326 mal abgerufen. · Letzte Counteraktualisierung erfolgte am 16.05.2008 um 04:30:21 · Diese Seite wurde zuletzt geändert um 13:37, 24. Sep 2004. · Letzte Portalaktualisierung erfolgte um 08:00:00 GMT, 25.02.2008
|